package com.hyx.api.enums;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public enum YesNoEnum {

    /**
     * 是
     */
    YES(1, "是"),
    /**
     * 否
     */
    NO(0, "否");


    /**
     * 枚举值
     */
    private final int code;

    /**
     * 枚举描述
     */
    private final String message;

    /**
     * @param code    枚举值
     * @param message 枚举描述
     */
    YesNoEnum(int code, String message) {
        this.code = code;
        this.message = message;
    }

    /**
     * @return 返回code
     */
    public int getCode() {
        return code;
    }

    /**
     * @return 返回枚举值
     */
    public String getMessage() {
        return message;
    }

    /**
     * @return 返回code
     */
    public int code() {
        return code;
    }

    /**
     * @return 返回枚举值
     */
    public String message() {
        return message;
    }

    /**
     * 通过枚举code获得枚举
     *
     * @return WeekEnum
     */
    public static YesNoEnum getByCode(Integer code) {
        if (code == null) return null;
        for (YesNoEnum pEnum : values()) {
            if (pEnum.getCode() == code) {
                return pEnum;
            }
        }
        return null;
    }

    /**
     * 获取全部枚举
     *
     * @return List<YesNoEnum> 返回所有枚举列表
     */
    public static List<YesNoEnum> getAllEnum() {
        return new ArrayList<>(Arrays.asList(values()));
    }

    /**
     * 获取全部枚举值
     *
     * @return List<String> 返回所有枚举code列表
     */
    public static List<Integer> getAllEnumCode() {
        List<Integer> list = new ArrayList<>();
        for (YesNoEnum pEnum : values()) {
            list.add(pEnum.code());
        }
        return list;
    }

    /**
     * 通过code获取msg
     *
     * @param code 枚举值
     */
    public static String getMsgByCode(Integer code) {
        if (code == null) {
            return null;
        }
        YesNoEnum pEnum = getByCode(code);
        if (pEnum == null) {
            return null;
        }
        return pEnum.getMessage();
    }

}
